package com.sgj.gulimall.search.vo;

import com.sgj.common.es.SkuEsModel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.ArrayList;
import java.util.List;
import java.util.Objects;

/**
 * @Author: Guoji Shen
 * @Date: 2021/7/21 14:55
 */
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class SearchResult {

    /**
     * 查询到的所有商品信息
     */
    private List<SkuEsModel> products;

    /**
     * 当前查询结果涉及的所有分类
     */
    private List<CatalogVo> catalogs;

    /**
     * 当前查询结果涉及的所有品牌
     */
    private List<BrandVo> brands;

    /**
     * 当前查询结果涉及的所有属性
     */
    private List<AttrVo> attrs;

    /**
     * 当前页
     */
    private Integer pageNum;

    /**
     * 总记录数
     */
    private Long total;

    /**
     * 总页码
     */
    private Integer totalPages;

    /**
     * 导航页码
     */
    private List<Integer> pageNavs;

    /**
     * 面包屑导航
     */
    private List<NavVo> navs = new ArrayList<>();

    /**
     * 属性id
     */
    private List<Long> attrIds = new ArrayList<>();

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public static class NavVo {

        /**
         * 导航名称
         */
        private String navName;

        /**
         * 导航值
         */
        private String navValue;

        /**
         * 跳转地址
         */
        private String link;
    }

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public static class CatalogVo {

        /**
         * 分类id
         */
        private Long catalogId;

        /**
         * 分类名称
         */
        private String catalogName;
    }

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public static class BrandVo {

        /**
         * 品牌id
         */
        private Long brandId;

        /**
         * 品牌名称
         */
        private String brandName;

        /**
         * 品牌图片
         */
        private String brandImg;
    }

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    public static class AttrVo {

        /**
         * 属性id
         */
        private Long attrId;

        /**
         * 属性名称
         */
        private String attrName;

        /**
         * 属性值
         */
        private List<String> attrValue;
    }
}